package datatypes;

import static org.junit.Assert.*;
import junit.framework.JUnit4TestAdapter;

import org.junit.Before;
import org.junit.Test;

public class Edge_test {
	Edge edge;
	
	public static junit.framework.Test suite() {
		return new JUnit4TestAdapter(Edge_test.class);
	}

	@Before
	public void setUp() throws Exception {
		edge = new Edge(new Vertex(1.0, -1.0), new Vertex(7.0, 3.0));
	}

//	@Test
//	public void testEdge() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testSetVertex1() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetVertex1() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testSetVertex2() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetVertex2() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetTrianglesLeft() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetTrianglesRight() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testAddTriangleToAdjacentTriangles() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testRemoveTriangleFromAdjacentTriangles() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testIsAdjacentToEdge() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetOtherVertex() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testSetHighlighted() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetHighlighted() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testConnectsCoordinates() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testHasVertex() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testIntersects() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testAngleWith() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetLength() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetLengthSquared() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testIsDiagonalOfQuadrilateral() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testToString() {
//		fail("Not yet implemented");
//	}

	@Test
	public void testGetNormal() {
		Vertex normal = edge.getNormal();
		double product = normal.multiplyWithVector(edge.getVector());
		assertEquals("A vector multiplied by its normal should be 0.", 0.0, product, 0.0000001);
		
		edge = new Edge(new Vertex(0.0, 0.0), new Vertex(0.0, 8.0));
		normal = edge.getNormal();
		Vertex edgeVector = edge.getVector();
		product = normal.multiplyWithVector(edgeVector);
		Vertex expected = new Vertex(1.0, 0.0);
		assertEquals("A vector multiplied by its normal should be 0.", 0.0, product, 0.0000001);
		assertEquals(expected, normal);
	}

	@Test
	public void testGetVector() {
		Vertex vector = edge.getVector();
		Vertex expected = new Vertex(6.0, 4.0);
		assertEquals("Vector", expected, vector);
	}

	@Test
	public void testGetCenter() {
		Vertex center = edge.getCenter();
		Vertex expected = new Vertex(4.0, 1.0);
		assertEquals("center not centered!", expected, center);
	}

//	@Test
//	public void testCompareTo() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testUpdateNode() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testSetFirstEdgeToCheckForIntersection() {
//		fail("Not yet implemented");
//	}
//
//	@Test
//	public void testGetFirstEdgeToCheckForIntersection() {
//		fail("Not yet implemented");
//	}

}
